package com.css.bjdt_core.dataSetManage.service;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.nutz.dao.Cnd;
import org.nutz.dao.Condition;
import org.nutz.dao.Dao;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.css.bjdt_core.dataSetManage.entity.DataItem;
import com.css.bjdt_core.dataSetManage.entity.DataSet;
import com.css.bjdt_core.dataSetManage.entity.ViewDataItem;
import com.css.bjdt_core.dataSetManage.entity.ViewRptDataSetItem;
import com.css.bjdt_core.util.PageQuerys;

@Service
public class DataItemService {
	@Autowired
	private Dao dao;

	@Autowired
	private DataSetService dataSetService;

	//分页查询
	public Map queryPage(Condition cnd, int pageNum, int pageSize) {
		Map result = PageQuerys.ligerGridQuery(dao, ViewRptDataSetItem.class, cnd, pageNum, pageSize);
		List<ViewRptDataSetItem> dataItemList = (List<ViewRptDataSetItem>) result.get("Rows");
		for (ViewRptDataSetItem dataItem : dataItemList) {
			String setId = dataItem.getSetId();
			DataSet dataSet = dataSetService.querySetById(setId);
			dataItem.setTableName(dataSet.getChineseName());

			int keyType = dataItem.getKeyType();
			if (keyType == 1) {
				dataItem.setKeyTypeName("主键");
			} else if (keyType == 2) {
				dataItem.setKeyTypeName("外键");
			} else {
				dataItem.setKeyTypeName("其他");
			}
		}
		result.put("Rows", dataItemList);
		return result;
	}

	//删除
	public int clear(List<Integer> ids) {
		return dao.clear(DataItem.class, Cnd.where("id", "IN", ids));
	}

	//删除一条信息集
	public void delete(String id) {
		dao.delete(DataItem.class, id);
	}

	//根据数据集Id删除对应数据项	
	public void deleteItem(String id) {
		dao.clear(DataItem.class, Cnd.where("setId", "=", id));
	}

	//插入
	public DataItem insert(DataItem record) {
		return dao.insert(record);
	}

	//查询单条
	public DataItem fetch(Integer id) {
		return dao.fetch(DataItem.class, id);
	}

	//查询信息集内容
	public DataItem querySetById(String id) {
		return dao.fetch(DataItem.class, id);
	}

	//更新非空
	public int updateIgnoreNull(List<DataItem> records) {
		return dao.updateIgnoreNull(records);
	}

	//更新
	public int update(DataItem record) {
		return dao.update(record);
	}

	//查询
	public List<DataItem> query(Condition cnd) {
		return dao.query(DataItem.class, cnd, null);
	}

	public Map<String, ViewDataItem> getPKAndFK() {
		List<ViewDataItem> items = dao.query(ViewDataItem.class, null);
		Map<String, ViewDataItem> itemMap = new HashMap<String, ViewDataItem>();
		for (ViewDataItem item : items) {
			itemMap.put(item.getSetId() + item.getKeyType(), item);
		}
		return itemMap;
	}

	public String getDataItemNameById(String id) {
		DataItem dataItem = dao.fetch(DataItem.class, id);
		return dataItem.getItemChineseName();
	}

	public DataItem getADataItem(Condition cnd) {
		return dao.fetch(DataItem.class, cnd);
	}
}
